package user_api

import (
	"github.com/gin-gonic/gin"
	"giv-vue-blog/global"
	"giv-vue-blog/models"
	"giv-vue-blog/models/ctype"
	"giv-vue-blog/models/res"
)

type UserRole struct {
	Role     ctype.Role `json:"role" binding:"required,oneof=1 2 3 4" msg:"权限参数错误"`
	NickName string     `json:"nick_name"` //防止用户昵称违法,管理员有能力修改
	UserID   uint       `json:"user_id" binding:"required" msg:"用户id错误"`
}

// UserUpdateRole 修改用户权限接口
// @Summary 修改用户权限
// @Description 修改用户权限，根据用户ID更新用户的角色和昵称信息
// @Tags 用户管理
// @Accept json
// @Produce json
// @Param user body UserRole true "用户权限信息"
// @Router /api/user_role [put]
// @Success 200 {string} string "修改用户权限成功"
// @Failure 400 {object} res.Response "请求参数错误"
// @Failure 404 {object} res.Response "用户不存在"
// @Failure 500 {object} res.Response "服务器内部错误"
func (UserApi) UserUpdateRole(c *gin.Context) {
	var user UserRole
	err := c.ShouldBindJSON(&user)
	if err != nil {
		res.FailedWithError(err, &user, c)
		return
	}
	//查找
	var userModel models.UserModel
	err = global.DB.Take(&userModel, user.UserID).Error
	if err != nil {
		res.FailedWithMsg("用户不存在", c)
		return
	}
	//更新
	err = global.DB.Model(&userModel).Updates(map[string]any{
		"role":      user.Role,
		"nick_name": user.NickName,
	}).Error
	if err != nil {
		global.Log.Error(err)
		res.FailedWithMsg("修改用户权限失败", c)
		return
	}
	res.OkWithMsg("修改用户权限成功", c)
}
